class Solution {
public:
    bool checkInclusion(string s1, string s2) 
    {
        if(s1.size() > s2.size())
            return false;

        int windowSize = s1.size();             //定义滑动窗口的大小为需判断串的大小

        vector<int> hashmap1(26, 0);        //定义了26个整型元素的向量，初始值均为0
        vector<int> hashmap2(26, 0);

        for(int i = 0; i < windowSize; i++)  //构建字典
        {
            hashmap1[s1[i] - 'a']++;
            hashmap2[s2[i] - 'a']++;
        }

        for(int j = windowSize; j < s2.size(); j++)
        {
            if(hashmap1 == hashmap2)        //两个字典相同则返回true
                return true;

            else                                           //不相等则滑动窗口
            {
                hashmap2[s2[j - windowSize] - 'a']--;
                hashmap2[s2[j] - 'a']++;
            }

        }

        return  hashmap1 == hashmap2;   //左闭右开区间
    }
};